set_intr_gate(FIRST_EXTERNAL_VECTOR+i, interrupt[i]);
}
-#ifdef CONFIG_SMP
/*
* IRQ0 must be given a fixed assignment and initialized,
* because it's used before the IO-APIC is set up.
*/
+ irq_vector[0] = FIRST_DEVICE_VECTOR;
+ vector_irq[FIRST_DEVICE_VECTOR] = 0;
set_intr_gate(FIRST_DEVICE_VECTOR, interrupt[0]);
/* Various IPI functions. */
set_intr_gate(EVENT_CHECK_VECTOR, event_check_interrupt);
set_intr_gate(INVALIDATE_TLB_VECTOR, invalidate_interrupt);
set_intr_gate(CALL_FUNCTION_VECTOR, call_function_interrupt);
-#endif
/* Self-generated IPI for local APIC timer. */
set_intr_gate(LOCAL_TIMER_VECTOR, apic_timer_interrupt);
}
/* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */
-u8 irq_vector[NR_IRQ_VECTORS] = { FIRST_DEVICE_VECTOR , 0 };
+u8 irq_vector[NR_IRQ_VECTORS];
int assign_irq_vector(int irq)
{
}
case EXIT_REASON_EXTERNAL_INTERRUPT:
{
- extern int vector_irq[];
extern asmlinkage void do_IRQ(struct cpu_user_regs *);
extern void smp_apic_timer_interrupt(struct cpu_user_regs *);
extern void timer_interrupt(int, void *, struct cpu_user_regs *);
extern void disable_irq_nosync(unsigned int);
extern void enable_irq(unsigned int);
+extern int vector_irq[NR_VECTORS];
extern u8 irq_vector[NR_IRQ_VECTORS];
#define IO_APIC_VECTOR(irq) irq_vector[irq]
#define AUTO_ASSIGN -1